﻿using Api.Model;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Api.Web.Tests
{
    [TestClass]
    public class Update
    {
        private Db db = Db.Current;
        [TestMethod]
        public void Update1()
        {
            //ok
            var model = db.Projects.FirstOrDefault();
            model.Name = "update1";
            db.SaveChanges();
        }

        [TestMethod]
        public void Update2()
        {
            //ok,這個應該是更好
            //不查詢更新，傳入Id
            var model = new Project() { Name = "update2"};
            db.Entry(model).State = System.Data.Entity.EntityState.Modified;
            db.SaveChanges();
        }
        #region 錯誤集合
        [TestMethod]
        public void Update3()
        {
            var original = db.Projects.Find(1);
            var model = new { Name = "update3", Id = 3 }; //error,不需要設置Id，設置了也沒用，因為EF中不能修改這個，估計是設置成了Identity，你在哪裡也修改不了
            db.Entry(original).CurrentValues.SetValues(model);
            db.SaveChanges();
        }
        [TestMethod]
        public void Update4()
        {
            //error不能
            //測試如果該屬性不存在會有影響嗎
            var original = db.Projects.Find(1);
            var model = new { Name123 = "update4" };
            db.Entry(original).CurrentValues.SetValues(model);
            db.SaveChanges();
        }
        [TestMethod]
        public void Update5()
        {
            //error不能
            //測試大小寫對屬性有影響嗎
            var original = db.Projects.Find(1);
            var model = new { naME = "update5"};
            db.Entry(original).CurrentValues.SetValues(model);
            db.SaveChanges();
        }
        #endregion
    }
}
